/**
 * 基于EasyUI的页面布局设计，提供全局公共方法和类库
 * 只需要在入口的框架页面引入
 * 其它页面引用对象即可window.layout=top.layout
 */

var layout = {
    homeTitle : '首页',
    //限制打开的TAB个数
    openTabs : 10,
    //TAB区域
    mainTab : null,
    //TAB的菜单
    mainTabMenu:null
};

/**
 * 提示信息
 * @param string msg 信息内容
 * @param string title 标题
 */
layout.message = function (msg, title) {
    $.messager.show({
        title:title,
        msg:msg,
        showType:'slide',
        style:{
            right:'',
            top:document.body.scrollTop+document.documentElement.scrollTop,
            bottom:''
        }
    });
}

/**
 * 提示错误，要求确认
 * @param string msg 错误内容
 * @param string title 标题
 */
layout.error = function (msg, title) {
    $.messager.alert(title,msg,'error');
}

/**
 * 打开新标签窗口
 * @param string url
 * @param string title
 * @param string icon 图标
 */
layout.openTab = function(url, title, icon) {
    if (url == "" || url == "#") {
        return false;
    }
    var countTabs = layout.mainTab.tabs("tabs").length;
    var curTab = layout.mainTab.tabs("exists", title);
    if((icon == undefined || icon == '') && (title != layout.homeTitle)) {
        icon = 'icon-book';
    }
    var checkTab = function () {
        if (!curTab) {
            layout.mainTab.tabs("add", {
                title: title,
                content: createFrame(url),
                closable: (title != layout.homeTitle),
                icon: icon
            })
        } else {
            layout.mainTab.tabs("select", title);
            layout.mainTab.tabs('getTab', title).find('iframe').get(0).contentWindow.location.reload();
        }
    };
    if (countTabs > layout.openTabs && !curTab) {
        var infoStr = "<b>您当前打开了太多的页面，如果继续打开，会造成程序运行缓慢，无法流畅操作！</b>";
        $.messager.confirm("系统提示", infoStr, function (r) {
            if (r) {
                checkTab();
            } else {
                return false;
            }
        })
    } else {
        checkTab();
    }
}

/**
 * 关闭指定的标签页
 * @param string title 窗口名称
 */
layout.closeTab = function (title) {
    layout.mainTab.tabs("close", title);
}

/**
 * 打开模态对话框
 * @param object options 参数
 * @returns 对话框对象
 */
layout.openModel = function (options) {
    var opts = $.extend({
        title: '&nbsp;',
        width: 600,
        height:  400,
        modal: true,
        maximizable:true,
        onClose: function () {
            $(this).dialog('destroy');
        }
    }, options);
    var h = $(window).height() - 150;
    opts.height = opts.height > h ? h : opts.height;
    if(opts.url) opts.content = '<iframe src="' + opts.url + '" allowTransparency="true" scrolling="auto" width="100%" height="' + ((navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion .split(";")[1].replace(/[ ]/g,"")=="MSIE7.0") ? '100%' : '98%') + '" frameBorder="0" ></iframe>';//ie7下表单高度异常修复
    return $('<div/>').dialog(opts);
}

/**
 * 创建IFrame
 * @param url
 * @returns {string}
 */
function createFrame(url) {
    var oCurTab =layout.mainTab.tabs('getSelected'), nHeight = '100%';
    if(oCurTab && oCurTab.length > 0){
        nHeight = oCurTab.height() - 5;
    }else{
        nHeight = layout.mainTab.height();
        nHeight = nHeight > 100 ? nHeight : $(window).height();
        nHeight = nHeight - 40;
    }
    return '<iframe src="' + url + '" frameborder="0" style="border:0;width:100%;height:' + nHeight + 'px;max-height:99%"></iframe>';
}

/**
 * 点击菜单树的节点
 * @param object node
 */
function clickMenu(node) {
    if(node.type == 1){
        if(node.url != '#') layout.openTab('/app'+node.url, node.text, '');
    }else{
        window.open(node.url);
    }
}

//布局的初始化
layout.init = function(){
    layout.mainTabMenu = $('#main_tabs_menu').menu({
        onClick: function (item) {
            var curTabTitle = $(this).data('tabTitle');
            var type = $(item.target).attr('title');

            if (type === 'refresh') {
                layout.mainTab.tabs('getTab', curTabTitle).find('iframe').get(0).contentWindow.location.reload();
                return;
            }

            if (type === 'close') {
                var t = layout.mainTab.tabs('getTab', curTabTitle);
                if (t.panel('options').closable) {
                    layout.mainTab.tabs('close', curTabTitle);
                }
                return;
            }

            var allTabs = layout.mainTab.tabs('tabs');
            var closeTabsTitle = [];

            $.each(allTabs, function () {
                var opt = $(this).panel('options');
                if (opt.closable && opt.title != curTabTitle && type === 'closeOther') {
                    closeTabsTitle.push(opt.title);
                } else if (opt.closable && type === 'closeAll') {
                    closeTabsTitle.push(opt.title);
                }
            });

            for (var i = 0; i < closeTabsTitle.length; i++) {
                layout.mainTab.tabs('close', closeTabsTitle[i]);
            }
        }
    });
    layout.mainTab = $("#main_tabs").tabs({
        fit: true,
        border: false,
        onContextMenu: function (e, title) {
            e.preventDefault();
            layout.mainTabMenu.menu('show', {
                left: e.pageX,
                top: e.pageY
            }).data('tabTitle', title);
        }
    });
    //首页
    layout.mainTab.tabs("add", {
        title: '首页',
        content: createFrame('/app/Sys/Index/main'),
        closable: false,
        icon: 'icon-home'
    });
}